/**
 * 地址栏条件参数辅助对象
 */
export default class GxUrlSearchParams {

  // 用户对象标识，search标识为'us'
  userId = -1;

  // 除上述参数外扩展的其他参数（KV键值对）
  exparams = new Map();

  /**
   * 传入URL的search字符串
   * @param {String} search
   */
  constructor(search) {
    if (search) {
      const searchParams = new URLSearchParams(search);
      const paramArr = searchParams.entries();
      for (const item of paramArr) {
        if (item[0] === "us") this.userId = Number(item[1]);
        else this.exparams.set(item[0], item[1]);
      }
    }
  }

  /**
   * 添加扩展的参数值
   * @param {string} key
   * @param {string} value
   */
  setExParam(key, value) {
    this.exparams.set(key, value);
  }

  /**
   * 根据key获取string的参数值
   * @param {string} key
   */
  getExParam(key) {
    return this.exparams.get(key);
  }

  /**
   * 输出成符合URL条件参数的字符串
   */
  toString() {
    let searchParams = new URLSearchParams("");
    if (this.userId > 0) searchParams.append("us", this.userId.toString());
    const paramArr = this.exparams.entries();
    for (const item of paramArr) {
      searchParams.append(item[0], item[1]);
    }
    return searchParams.toString();
  }
}
